# Synth Auto #

Synth Auto is an In-Vehicle-Infotainment system. It is built on an open standard and based on proven Microkernel architecture for Real-Time message driven HTML5 framework. Its main advantage is that it works offline, anywhere in the world without an Internet connection. Its modular design also makes it really easy to extend and write modules for it in HTML5 and any other back-end CGIs you desire to use. Since it runs in a browser, you also have the option of extending it with pre-built browser plugins. 

**Why HTML5?**

HTML5 is open and a standard in all computers, smartphones and other IoT. It is the "code once, deploy everywhere" platform. 
You want to develop a single application, that will work on all devices regardless of manufacture or brand. 

Motto: **It works when you need it the most** (out of radio coverage area, when your data cap runs out, in natural disasters...). Lets face it, you don't use maps to go do your weekly grocery shopping.

![synthauto-architecture1.1.png](https://bitbucket.org/repo/o4gABo/images/4032177832-synthauto-architecture1.1.png)

Features include:

* Maps can be customized for all types of transport including vehicles & public transport, bicycles and walking. 
* HTML5 audio & video player.
* Loose coupling, meaning module code can be easily reused.
* Multi-thread support.

![Screenshot.png](https://bitbucket.org/repo/o4gABo/images/1352287053-Screenshot.png)

*Main Dashboard*

![map-media-main.png](https://bitbucket.org/repo/o4gABo/images/278004117-map-media-main.png)

*Turn-By-Turn Navigation & Media Player*

**Software Road-map:**

* WebGL rendered maps 

* Camera integration 

* Module manager 

* Vector mapping (WebGL) 

* Message bus to support JSON responses 

* *REAL* Offline Geocaching for street lookup 

* Real-Time Traffic management 

* Want to see Vehicle-2-Vehicle, Vehicle-2-Pedestrian, and even Vehicle-2-PT implementation!!


**Project Overview**

* https://docs.google.com/presentation/d/1CrI9UiiOja_0VYL5LooUWw9W7i_YVQoEYAAJjVPdzvA/edit?usp=sharing

**Software Breakdown**

![kernel-arch.PNG](https://bitbucket.org/repo/o4gABo/images/3166099448-kernel-arch.PNG)

*(module above means web app)*
---------------------------------------------------------
![messagebus.PNG](https://bitbucket.org/repo/o4gABo/images/2083367425-messagebus.PNG)

---------------------------------------------------------
![sa arch.PNG](https://bitbucket.org/repo/o4gABo/images/2328768344-sa%20arch.PNG)

* https://docs.google.com/drawings/d/1xrSSEhdy7Ss3fTbex_ZNsceUga0OhS_9LS_gq3kRGRQ/edit?usp=sharing

### How do I get set up? ###

Don't worry, a simple installer will follow soon :)

#### Requirements: ####

#####GPSD - [www.catb.org/gpsd/](www.catb.org/gpsd/)#####

For Debian:


```
#!bash

sudo apt-get install gpsd gpsd-clients
```

#####GIT - source code manager#####

For Debian:


```
#!bash

sudo apt-get install git
```
#####HTTPD - Web server (apache2, nginx) with PHP and sqlite support#####

For Debian:


```
#!bash

sudo apt-get install apache2 php5 libapache2-mod-php5 sqlite3 php5-sqlite 
```
 - Modify /etc/apache2/apache2.conf and /etc/apache2/sites-enabled/* to point to Synth Auto

#####Tile server for mapping service. [TileStache](tilestache.org) with [OSM](www.openstreetmaps.com) tiles works well for off line use.#####

For Debian:

 - Get [Python setuptools](http://pypi.python.org/pypi/setuptools#files)


```
#!bash

sudo python ez_setup.py
```
After install of ez_setuptools do:


```
#!bash

easy_install.py tilestache
```
#####Routing server for routing & direction service. [Graphhopper](graphhopper.com) is a java based routing engine endorsed by us.#####

For Debian:


```
#!bash

git clone https://github.com/graphhopper/graphhopper.git

```

#####HTML5 compliant web browser (Chrome, Firefox, Safari)

**Configuration**

* GPSD - Synth Auto will listen on default GPSD port 2947 for JSON response. Binary(SiRF)/NMEA0183 translation is done at GPSD level
* HTTPD - Add virtual directory pointing to the root directory of your media folder
* .......

**Database configuration**

* HTML5 LocalStorage configs.........

### Contribution guidelines ###

**Development branch model**

![git workflow.PNG](https://bitbucket.org/repo/o4gABo/images/4268617021-git%20workflow.PNG)

Development:

* Master << Release (RS-) << Development (DV-) << Feature (FT-)

Hot Fixes:

* Master << HotFix (HF-) >> Development (DV-) 

(<< denotes merge direction, prefix in (brackets))

**Code review**

* Create a pull request and a moderator will review your code
* Merges to be completed during test on the testing tree, before merging to release branch. *Critical changes exempt and should use branch name with "HF-" prefix to define it as a Hot fix.

### Who do I talk to? ###

* You can contact me through the issue tracker or forum on this repository